#ifndef FARMING_HPP
#define FARMING_HPP

#include "igeneral.hpp"
#include "antlist.hpp"
#include "wavemap.hpp"


/*
/// Сельское хозяйство
class farming
{
  igeneral* _my_general;
public:
  farming(igeneral* g)
    : _my_general(g)
    , _limit(0)
  {
  }

  void create(int rows, int cols, bitmap* bm, weightmap* wm1, weightmap* wm2)
  {
    _foodmap.create( rows, cols, bm, wm1, wm2);
    _antlist.create( &_foodmap );
  }
  
  /// Вся еда должна быть добавлена до добавления муравьев
  void add_food(location loc)
  {
    // _foodmap.set(loc, 1);
    _targets.set(loc);
  }


  bool ready_food() const
  {
    return _foodmap;
  }


  wavemap* foodmap()
  {
    return &_foodmap;
  }

  // Один раз за ход
  void reconnaissance( size_t limit , bitmap* vizible_map )
  {
    _foodmap.set(_targets);
    if ( !_foodmap )
        _foodmap.begin_drive();

    _limit = limit;
    _antlist.create( &_foodmap );

    for (int i = 0; i < 254 && !_foodmap; ++i)
    {
     _foodmap.drive_wave();
    }
  }

  // наконец берем направление куда его двигать
  int get_direction(location loc)
  {
    return _foodmap.direction( loc );
  }

  /// Добавляем только своих муравьев, после проведения рекогносцировки
  void add_ant( location loc )
  {
    if ( _antlist.size() < _limit )
      _antlist.add( loc );
  }

  // Помечаем что муравей сделал ход
  void remove_ant( location loc )
  {
    _antlist.remove(loc);
  }

  void finalize()
  {
    // _foodmap.reset();
    _targets.reset();
    _antlist.clear();
  }

protected:
  antlist _antlist;
  wavemap _foodmap;
  bitmap  _targets;
  // Лимит на извлечение
  size_t _limit;
};
*/
#endif